aviファイルを読み込み,1フレームずつ間隔をSleep関数を用いて変化させて再生速度を変えるプログラムを作っています.
0倍速,等倍速,2倍速,3倍速,4倍速,5倍速の速度を行き来させたいです.
ビルドはできるのですが,処理速度が大幅にかかった挙句,書き出せれたaviファイルを見ると157KBしかなく再生できません.
環境は,Windows10,OpenCV3-3-0,Visual Studio2015,C++です.
C++
1#include "stdafx.h" 2 3#include "opencv2/highgui.hpp" 4#include "opencv2/Videoio.hpp" 5#include <opencv2/core.hpp> 6 7 8#include <Windows.h> 9 10#include <stdio.h> 11#include <iostream> 12 13 14using namespace std; 15using namespace cv; 16 17int main() { 18 VideoCapture video("C:\Users\yujin\Desktop\読み込むファイル.avi"); 19 20 VideoWriter writer("C:\Users\yujin\Documents\書き出すファイル.avi", CV_FOURCC_DEFAULT, 30, cv::Size(4096, 2048), true); 21 Mat frame; 22 23 while (1) { 24 25 video >> frame; 26 Sleep(367); 27 // ここから通常速 28 video >> frame; 29 Sleep(33); 30 31 video >> frame; 32 Sleep(33); 33 34 video >> frame; 35 Sleep(33); 36 37 video >> frame; 38 Sleep(33); 39 40 video >> frame; 41 Sleep(33); 42 43 video >> frame; 44 Sleep(33); 45 46 video >> frame; 47 Sleep(33); 48 49 video >> frame; 50 Sleep(33); 51 52 video >> frame; 53 Sleep(33); 54 55 video >> frame; 56 Sleep(33); 57 58 video >> frame; 59 Sleep(33); 60 61 video >> frame; 62 Sleep(33); 63 64 // ここから2倍速 65 video >> frame; 66 Sleep(67); 67 68 video >> frame; 69 Sleep(67); 70 71 video >> frame; 72 Sleep(67); 73 74 video >> frame; 75 Sleep(67); 76 77 video >> frame; 78 Sleep(67); 79 80 video >> frame; 81 Sleep(67); 82 83 video >> frame; 84 Sleep(67); 85 86 video >> frame; 87 Sleep(67); 88 89 video >> frame; 90 Sleep(67); 91 92 video >> frame; 93 Sleep(67); 94 95 video >> frame; 96 Sleep(67); 97 98 video >> frame; 99 Sleep(67); 100 101 video >> frame; 102 Sleep(67); 103 104 // 3倍速 105 video >> frame; 106 Sleep(100); 107 108 video >> frame; 109 Sleep(100); 110 111 video >> frame; 112 Sleep(100); 113 114 video >> frame; 115 Sleep(100); 116 117 video >> frame; 118 Sleep(100); 119 120 video >> frame; 121 Sleep(100); 122 123 video >> frame; 124 Sleep(100); 125 126 video >> frame; 127 Sleep(100); 128 129 video >> frame; 130 Sleep(100); 131 132 video >> frame; 133 Sleep(100); 134 135 video >> frame; 136 Sleep(100); 137 138 video >> frame; 139 Sleep(100); 140 141 video >> frame; 142 Sleep(100); 143 144 video >> frame; 145 Sleep(100); 146 147 video >> frame; 148 Sleep(100); 149 150 video >> frame; 151 Sleep(100); 152 153 video >> frame; 154 Sleep(100); 155 156 // 4倍速 157 video >> frame; 158 Sleep(133); 159 160 video >> frame; 161 Sleep(133); 162 163 video >> frame; 164 Sleep(133); 165 166 video >> frame; 167 Sleep(133); 168 169 video >> frame; 170 Sleep(133); 171 172 video >> frame; 173 Sleep(133); 174 175 video >> frame; 176 Sleep(133); 177 178 video >> frame; 179 Sleep(133); 180 181 video >> frame; 182 Sleep(133); 183 184 video >> frame; 185 Sleep(133); 186 187 video >> frame; 188 Sleep(133); 189 190 video >> frame; 191 Sleep(133); 192 193 video >> frame; 194 Sleep(133); 195 196 video >> frame; 197 Sleep(133); 198 199 video >> frame; 200 Sleep(133); 201 202 video >> frame; 203 Sleep(133); 204 205 video >> frame; 206 Sleep(133); 207 208 video >> frame; 209 Sleep(133); 210 211 video >> frame; 212 Sleep(133); 213 214 video >> frame; 215 Sleep(133); 216 217 video >> frame; 218 Sleep(133); 219 220 video >> frame; 221 Sleep(133); 222 223 video >> frame; 224 Sleep(133); 225 226 video >> frame; 227 Sleep(133); 228 229 video >> frame; 230 Sleep(133); 231 232 video >> frame; 233 Sleep(133); 234 235 video >> frame; 236 Sleep(133); 237 238 video >> frame; 239 Sleep(133); 240 241 video >> frame; 242 Sleep(133); 243 244 video >> frame; 245 Sleep(133); 246 247 video >> frame; 248 Sleep(133); 249 250 video >> frame; 251 Sleep(133); 252 253 video >> frame; 254 Sleep(133); 255 256 video >> frame; 257 Sleep(133); 258 259 video >> frame; 260 Sleep(133); 261 262 video >> frame; 263 Sleep(133); 264 265 266 267 ///////////////////////////////////////////////// 268 269 // 5倍速 270 video >> frame; 271 Sleep(167); 272 273 ///////////////////////////////////////////////// 274 275 // 4倍速 276 video >> frame; 277 Sleep(133); 278 279 video >> frame; 280 Sleep(133); 281 282 video >> frame; 283 Sleep(133); 284 285 video >> frame; 286 Sleep(133); 287 288 video >> frame; 289 Sleep(133); 290 291 video >> frame; 292 Sleep(133); 293 294 video >> frame; 295 Sleep(133); 296 297 video >> frame; 298 Sleep(133); 299 300 video >> frame; 301 Sleep(133); 302 303 video >> frame; 304 Sleep(133); 305 306 video >> frame; 307 Sleep(133); 308 309 video >> frame; 310 Sleep(133); 311 312 video >> frame; 313 Sleep(133); 314 315 video >> frame; 316 Sleep(133); 317 318 video >> frame; 319 Sleep(133); 320 321 video >> frame; 322 Sleep(133); 323 324 video >> frame; 325 Sleep(133); 326 327 video >> frame; 328 Sleep(133); 329 330 video >> frame; 331 Sleep(133); 332 333 video >> frame; 334 Sleep(133); 335 336 video >> frame; 337 Sleep(133); 338 339 video >> frame; 340 Sleep(133); 341 342 video >> frame; 343 Sleep(133); 344 345 video >> frame; 346 Sleep(133); 347 348 video >> frame; 349 Sleep(133); 350 351 video >> frame; 352 Sleep(133); 353 354 video >> frame; 355 Sleep(133); 356 357 video >> frame; 358 Sleep(133); 359 360 video >> frame; 361 Sleep(133); 362 363 video >> frame; 364 Sleep(133); 365 366 video >> frame; 367 Sleep(133); 368 369 video >> frame; 370 Sleep(133); 371 372 video >> frame; 373 Sleep(133); 374 375 video >> frame; 376 Sleep(133); 377 378 video >> frame; 379 Sleep(133); 380 381 video >> frame; 382 Sleep(133); 383 384 // 3倍速 385 video >> frame; 386 Sleep(100); 387 388 video >> frame; 389 Sleep(100); 390 391 video >> frame; 392 Sleep(100); 393 394 video >> frame; 395 Sleep(100); 396 397 video >> frame; 398 Sleep(100); 399 400 video >> frame; 401 Sleep(100); 402 403 video >> frame; 404 Sleep(100); 405 406 video >> frame; 407 Sleep(100); 408 409 video >> frame; 410 Sleep(100); 411 412 video >> frame; 413 Sleep(100); 414 415 video >> frame; 416 Sleep(100); 417 418 video >> frame; 419 Sleep(100); 420 421 video >> frame; 422 Sleep(100); 423 424 video >> frame; 425 Sleep(100); 426 427 video >> frame; 428 Sleep(100); 429 430 video >> frame; 431 Sleep(100); 432 433 video >> frame; 434 Sleep(100); 435 436 // ここから2倍速 437 video >> frame; 438 Sleep(67); 439 440 video >> frame; 441 Sleep(67); 442 443 video >> frame; 444 Sleep(67); 445 446 video >> frame; 447 Sleep(67); 448 449 video >> frame; 450 Sleep(67); 451 452 video >> frame; 453 Sleep(67); 454 455 video >> frame; 456 Sleep(67); 457 458 video >> frame; 459 Sleep(67); 460 461 video >> frame; 462 Sleep(67); 463 464 video >> frame; 465 Sleep(67); 466 467 video >> frame; 468 Sleep(67); 469 470 video >> frame; 471 Sleep(67); 472 473 video >> frame; 474 Sleep(67); 475 476 // ここから通常速 477 video >> frame; 478 Sleep(33); 479 480 video >> frame; 481 Sleep(33); 482 483 video >> frame; 484 Sleep(33); 485 486 video >> frame; 487 Sleep(33); 488 489 video >> frame; 490 Sleep(33); 491 492 video >> frame; 493 Sleep(33); 494 495 video >> frame; 496 Sleep(33); 497 498 video >> frame; 499 Sleep(33); 500 501 video >> frame; 502 Sleep(33); 503 504 video >> frame; 505 Sleep(33); 506 507 video >> frame; 508 Sleep(33); 509 510 video >> frame; 511 Sleep(33); 512 513 514 // 停止 515 video >> frame; 516 Sleep(367); 517 //フレームが空か、ボタンが押された時か一周したときに出る。 518 if (frame.empty() || waitKey(30) >= 0 || video.get(CV_CAP_PROP_POS_AVI_RATIO) == 1) { 519 break; 520 } 521 } 522 writer <<frame; 523 imshow("Video", frame); 524 waitKey(1); 525 } 526
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。