استفسار يتعلق بقاعدة بيانات للصور


(gem) #1

[CENTER][SIZE=“4”]السلام عليكم

عندي قاعدة بيانات لمجموعة من الصور
وعملنا دوران لها بــ for loop
وأردت حفظ كل صوره لوحدها بعد الدوران كيف يمكن ذلك؟؟؟

وهذا البرنامج

for k=1:30
if k<=9
nm='img000000';
else
if k<=99
nm='img00000';
else
if k<=999
nm='img0000';
else
nm='img000';
end
end
end
imname=strcat('D:\MATLAB\work\DB\',nm,int2str(k),'.jpg');
im=imread(imname);
r=imrotate(im,45);
o=imwrite(r,'k.jpg');
end

لما أنفذ هذا البرنامج يبدل كل صوره مكان الثانيه لأنها كلها باسم واحد
وينتهي بآخر صوره في القاعده
كيف أجعله يسمي كل صوره باسم؟؟؟

[/size][/center]


(عبد العزيز غالب) #2

السلام عليكم
يا ريت تجيبو ا شرح على البرنامج كيف عمله

بالمناسبه يوجد شي اسمه concatenation في البرمجه بشكل عام واكيد موجود بالماتب لاب
وهو يستخدم لجمع جزئين مختلفين من string فربما تستخدم لهذا الغرض

ولي عوده


(غــلا) #3

وعليكم السلام و رحمه الله وبركاته
عندى اضافه بسيطه على الرغم من امر imwrite مارضيت تتطبق

بس الى اعرفه
انه لما بحفظ نتيجه الدوران باكثر من اسم
استخدم امر strcat لتكوين الاسم اكثر من مقطع
فاقترح ان الكود يكون


[B][SIZE=4][COLOR=purple]for i=1:100[/color][/size][/b]
 
[B][SIZE=4][COLOR=purple]im=imread(imname);[/color][/size][/b]
[B][SIZE=4][COLOR=purple]r=imrotate(im,45);[/color][/size][/b]
[B][SIZE=4][COLOR=purple]s=num2str(i);[/color][/size][/b]
[B][SIZE=4][COLOR=purple]k=strcat('rotate',s);[/color][/size][/b]
[B][SIZE=4][COLOR=purple]o=imwrite(k,'k.jpg');[/color][/size][/b]
 

وبكذا راح يتغير اسم الصوره
بس مثل ماقلت مارضيت imwrite تطبق معاى
لكن انا طبقتها بدل imwrite تعليمه تخزن الصوره بامتداد .fig
وهى تعليمه hgsave(k);
ولو تبحثى فى المنتدى
بتلاقى موضوع باسمى فيه نفس المشكله
وفيه رد للمهندس سعود وفقه الله الكود وشرحه


(عبد العزيز غالب) #4

السلام عليكم ورحمه الله وبركاته

اولا أرجو أن اكون قد فهمت السؤال فاذا صح ذلك فقد وفقت عن طريق التجربه والخطاء بالوصول الى حل مناسب له


اذا كان مفهوم السؤال ان هناك صور مخزنه (افترضتها هنا في الماتلاب نفسها C:\MATLAB7\work ) وهذه الصور متسلسله في الاسم 'img0000009 ‘img0000003’ ‘img0000002’ ‘img0000001’ ونريد قرائتها وعمل دوران لها وتخزينها (طبعا افترضتها في نفس الباث ) فهذا هو البرنامج المطلوب
[FONT=Arial Narrow][SIZE=5]

[/size][/font]
[FONT=Arial Narrow][SIZE=5] [/size][/font]
[LEFT][FONT=Arial Narrow][SIZE=5]for k=1:30[/size][/font][/left]

[FONT=Arial Narrow][SIZE=5][/size][/font][LEFT][FONT=Arial Narrow][SIZE=5]if k<=9[/size][/font]
[LEFT][FONT=Arial Narrow][SIZE=5]nm='img000000';[/size][/font]
[FONT=Arial Narrow][SIZE=5]else[/size][/font]
[FONT=Arial Narrow][SIZE=5]if k<=99[/size][/font]
[FONT=Arial Narrow][SIZE=5]nm='img00000';[/size][/font]
[FONT=Arial Narrow][SIZE=5]else[/size][/font]
[FONT=Arial Narrow][SIZE=5]if k<=999[/size][/font]
[FONT=Arial Narrow][SIZE=5]nm='img0000';[/size][/font]
[FONT=Arial Narrow][SIZE=5]else[/size][/font]
[FONT=Arial Narrow][SIZE=5]nm='img000';[/size][/font]
[FONT=Arial Narrow][SIZE=5]end[/size][/font]
[FONT=Arial Narrow][SIZE=5]end[/size][/font]
[FONT=Arial Narrow][SIZE=5]end[/size][/font]
[FONT=Arial Narrow][SIZE=5]imname=strcat(nm,int2str(k),'.jpg');[/size][/font]
[FONT=Arial Narrow][SIZE=5]im=imread(imname);[/size][/font]
[FONT=Arial Narrow][SIZE=5]image (im) % to show the image  before rotation ((has to be disabled when working with the databases))[/size][/font]
[FONT=Arial Narrow][SIZE=5]r=imrotate(im,45);[/size][/font]
[FONT=Arial Narrow][SIZE=5]figure % to hold the graph[/size][/font]
[FONT=Arial Narrow][SIZE=5]image(r) % to show the image after rotation   ((has to be disabled when working with the databases))[/size][/font]
[FONT=Arial Narrow][SIZE=5]imwrite(r,strcat('aziz', int2str(k),'.jpg'), 'jpg'); [/size][/font]
[FONT=Arial Narrow][SIZE=5]im2= imread(strcat( 'aziz', int2str(k),'.jpg'));[/size][/font]
[FONT=Arial Narrow][SIZE=5]figure  % to hold the graph[/size][/font]
[FONT=Arial Narrow][SIZE=5]image(im2)  % to show the image ((has to be disabled when working with the databases))[/size][/font]
[FONT=Arial Narrow][SIZE=5]title(' The stored  picture  from "almohandes.com"  ')  %  indicate which one is the new image ((has to be disabled when working with the databases)) [/size][/font]
[FONT=Arial Narrow][SIZE=5]end[/size][/font][/left]
[/left]
[FONT=Arial Narrow][SIZE=5][/size][/font]
[FONT=Arial Narrow][SIZE=5] [/size][/font]
[FONT=Arial Narrow][SIZE=5]

[/size][/font]


((has to be disabled when working with the databases))
العباره المودوده امام الكود تبين انه ليس من البرنامج فقط وضعت هنا من اجل التوضيح
والبرنامج مع الصور المجربه موجوده في المرفقات


تحياتي




(gem) #5

مشكوره عزيزتي غلا على المرور والرد
يعطيك العافيه

أخوي عبد العزيز
بالضبط مثل ماانتَ فهمت

الله ييسر أمورك
ويزيدك علم
وينفع بعلمك
جزاك الله ألف خير


(عبد العزيز غالب) #6

الحمد لله اني فهمت صح ففهم السؤال نصف الاجابه

نلتقي لنرتقي

تحياتي


(المهندس سعود) #7

شوف الموضوع في الرابط التالي
اكيد رح يفيدك
الحل بطريقه اخرى
http://www.almohandes.org/vb/showthread.php?t=32046&highlight=%CF%E6%D1%C7%E4


(gem) #8

جزاك الله الجنه

ونفع بعلمك